home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok33.lha / RemTabs / RemTabs.mod < prev    next >
Text File  |  1993-08-15  |  3KB  |  93 lines

  1. (* -------------------------------------------------------------------------
  2.   :Program.       RemTabs
  3.   :Author.        Kai Bolay
  4.   :Address.       Hoffmannstraße 168, 7250 Leonberg
  5.   :Phone.         07152/22135
  6.   :History.       v1.0 Initial
  7.   :history.       v1.1 Bug fixes
  8.   :Copyright.     Freeware
  9.   :Language.      Modula-2
  10.   :Translator.    M2Amiga 3.2d
  11.   :Contents.      Remove all Tabs from a Textfile and replace by Spaces
  12.   :Remark.        Tab-Stops are every 8th column
  13. ------------------------------------------------------------------------- *)
  14. MODULE RemTabs;
  15.  
  16. FROM Arts       IMPORT DetectCtrlC;
  17. FROM Arguments  IMPORT NumArgs, GetArg;
  18. FROM ASCII      IMPORT ht, cr, lf;
  19. FROM Terminal   IMPORT WriteString, WriteLn;
  20. FROM FileSystem IMPORT File, Lookup, Close, ReadChar, WriteChar, done;
  21.  
  22. CONST TabWidth = 8; (* change it if you want! *)
  23.  
  24. VAR OldFileName,
  25.     NewFileName : ARRAY [0..31] OF CHAR;
  26.     OldFile,
  27.     NewFile     : File;
  28.     ProgName    : ARRAY [0..100] OF CHAR;
  29.     Len         : INTEGER;
  30.     PosInLine   : CARDINAL;
  31.     ActChar     : CHAR;
  32.     Start       : BOOLEAN;
  33.  
  34. BEGIN
  35.    DetectCtrlC (FALSE);
  36.    GetArg (0, ProgName, Len);
  37.    WriteString ("Written 1989 by Kai Bolay / Version 1.1"); WriteLn;
  38.    IF NumArgs () # 2 THEN
  39.       WriteString ("Usage: "); WriteString (ProgName);
  40.       WriteString (" 'OldFile' 'NewFile'"); WriteLn;
  41.       WriteString ("   OldFile: File with Tabs"); WriteLn;
  42.       WriteString ("   NewFile: Output File without Tabs"); WriteLn;
  43.    ELSE
  44.       GetArg (1, OldFileName, Len);
  45.       GetArg (2, NewFileName, Len);
  46.       Lookup (OldFile, OldFileName, 1024, FALSE);
  47.       IF OldFile.res # done THEN
  48.          WriteString ("Can't open '"); WriteString (OldFileName);
  49.          WriteString ("'"); WriteLn;
  50.       ELSE
  51.          Lookup (NewFile, NewFileName, 1024, TRUE);
  52.          IF NewFile.res # done THEN
  53.             WriteString ("Can't create '"); WriteString (NewFileName);
  54.             WriteString ("'"); WriteLn;
  55.          ELSE
  56.             PosInLine := 1;
  57.             LOOP
  58.                ReadChar (OldFile, ActChar);
  59.                IF OldFile.res # done THEN
  60.                   WriteString ("Error while reading!"); WriteLn;
  61.                   EXIT;
  62.                END; (* IF *)
  63.                IF OldFile.eof = TRUE THEN EXIT; END;
  64.                IF ActChar = ht THEN
  65.                   Start := TRUE;
  66.                   WHILE (((PosInLine-1) MOD TabWidth) # 0) OR Start DO
  67.                      WriteChar (NewFile, ' ');
  68.                      INC (PosInLine);
  69.                      IF NewFile.res # done THEN
  70.                         WriteString ("Error while writing"); WriteLn;
  71.                         EXIT;
  72.                      END; (* IF *)
  73.                      Start := FALSE; (* to avoid endless loop *)
  74.                   END; (* WHILE *)
  75.                ELSE
  76.                   WriteChar (NewFile, ActChar);
  77.                   INC (PosInLine);
  78.                   IF NewFile.res # done THEN
  79.                      WriteString ("Error while writing!"); WriteLn;
  80.                      EXIT;
  81.                   END; (* IF *)
  82.                END; (* IF *)
  83.                IF (ActChar = lf) OR (ActChar = cr) THEN
  84.                   PosInLine := 1;
  85.                END; (* IF *)
  86.             END; (* LOOP *)
  87.             Close (NewFile);
  88.          END; (* IF *)
  89.          Close (OldFile);
  90.       END; (* IF *)
  91.    END; (* IF *)
  92. END RemTabs.
  93.